package com.hwj.easybuysys.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hwj.easybuysys.mapper.EbProductMapper;
import com.hwj.easybuysys.model.EbProduct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Service//证---service层
public class EbProductService {
    @Autowired
    private EbProductMapper ebProductMapper;

    public Page<EbProduct> list(int psize, int limit){//导包 alt+enter,然后选择短的
        Page<EbProduct> page=new Page(psize,limit);
        //page.addOrder(OrderItem.asc("age"));//排序
        return ebProductMapper.selectPage(page,null);

    }

    public EbProduct detail(int epId) {

        return ebProductMapper.selectById(epId);
    }

    public void addCar(int epId, HttpServletRequest request) {
        //调用mapper获取商品对象
        EbProduct newProduct=ebProductMapper.selectById(epId);
        //创建购物车(session)
        HttpSession session=request.getSession();
        //得到集合（要加入购物车的商品），1、创建，2、从session中获取
        Set<EbProduct> set=null;
        //从购物车获取袋子（集合容器）

        set=(Set<EbProduct>)session.getAttribute("car");
        if(set==null){
           set=new HashSet<>();
        }
        //标记法查找问题 设定一个boolean值，如果找到则判断找到数据，否则则没有找到

        boolean flag = false;
        for(EbProduct oldEbproduct :set){
            //判断set中是否有新加入的购物车商品
            if(newProduct.getEpId().equals(oldEbproduct.getEpId())){
                oldEbproduct.setCount(oldEbproduct.getCount()+1);
                flag=true;
                break;
            }
        }
        if(!flag){
            set.add(newProduct);//记得在实体类中要修改hashcode方法和eq方法
        }
        //将商品放入集合
        set.add(newProduct);
        //将集合放入购物车
        session.setAttribute("car",set);
    }
}
